package pe.gob.foncodes.ssa.bs.seguridad.domain;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;

/**
 *
 * @author aespinoza
 */
@Entity
@Table(name = "PERSONAL", catalog = "", schema = "GEN")
@NamedQueries({
    @NamedQuery(name = "Personal.findAll", query = "SELECT p FROM Personal p"),
    @NamedQuery(name = "Personal.findByNidPersonal", query = "SELECT p FROM Personal p WHERE p.nidPersonal = ?1"),
    @NamedQuery(name = "Personal.findByNidUsuario", query = "SELECT p FROM Personal p WHERE p.nidUsuario = :nidUsuario"),
    @NamedQuery(name = "Personal.findByEstPersonal", query = "SELECT p FROM Personal p WHERE p.estPersonal = :estPersonal"),
    @NamedQuery(name = "Personal.findByTipProfesion", query = "SELECT p FROM Personal p WHERE p.tipProfesion = :tipProfesion"),
    @NamedQuery(name = "Personal.findByTipSexo", query = "SELECT p FROM Personal p WHERE p.tipSexo = :tipSexo"),
    @NamedQuery(name = "Personal.findByDNI", query = "SELECT p FROM Personal p WHERE (?1 IS NULL OR p.txtDni = ?1)"),
    @NamedQuery(name = "Personal.findByApeNom", query = "SELECT p FROM Personal p WHERE (CONCAT(trim(p.txtApellidoPaterno),' ',trim(p.txtApellidoMaterno),' ',trim(p.txtNombres)) LIKE ?1)"),
    @NamedQuery(name = "Personal.findByDNIApeNom", query = "SELECT p FROM Personal p WHERE (p.txtDni = ?1) "
        + "AND (CONCAT(trim(p.txtApellidoPaterno),' ',trim(p.txtApellidoMaterno),' ',trim(p.txtNombres)) LIKE ?2)")
})
public class Personal implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long nidPersonal;
    private Long nidUsuario;
    private Character estPersonal;
    private String tipPrefijoPersona;
    private String txtApellidoCasada;
    private String codDepartamentoNac;
    private String codProvinciaNac;
    private String codDistritoNac;
    private String codBanco;
    private String txtRazonSocial;
    private String txtCuentaAbono;
    private Character tipDocumentoIdentidad;
    private String txtDni;
    private String txtEssalud;
    private String txtCarnetExtranjeria;
    private String txtRucAnt;
    private String txtAfp;
    private String txtPasaporte;
    private String txtRuc;
    private String txtLegajo;
    private String txtDocumentoIdentidad;
    private String tipPersonal;
    private String txtApellidoPaterno;
    private String txtApellidoMaterno;
    private Character estCivil;
    private String txtNombres;
    private String tipContrato;
    private String tipGradoInstruccion;
    private String txtDireccion;
    private String txtEspecializacion;
    private String tipProfesion;
    private String txtTelefono;
    private Date fecResidencia;
    private String txtCorreo;
    private String txtObservacion;
    private Character tipSexo;
    private Date fecNacimiento;
    private Date fecRegistro;
    private String codNacionalidad;
    private String codPersonalAnt1;
    private String codPersonalAnt2;
    private String codDepartamentoLoc;
    private String codProvinciaLoc;
    private String codDistritoLoc;
    private Short numHijos;
    private Short numHijas;
    private Short numDependientes;
    private Long nidRazonSocial;
    private String txtProfesion;
    private UnidadOrganizacional codUnidadRegistro;
    private UnidadOrganizacional codUnidad;

    public Personal() {
    }
    
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "NID_PERSONAL", nullable = false)
    public Long getNidPersonal() {
        return nidPersonal;
    }

    public void setNidPersonal(Long nidPersonal) {
        this.nidPersonal = nidPersonal;
    }

    @Column(name = "NID_USUARIO")
    public Long getNidUsuario() {
        return nidUsuario;
    }

    public void setNidUsuario(Long nidUsuario) {
        this.nidUsuario = nidUsuario;
    }

    @Column(name = "EST_PERSONAL")
    public Character getEstPersonal() {
        return estPersonal;
    }

    public void setEstPersonal(Character estPersonal) {
        this.estPersonal = estPersonal;
    }

    @Column(name = "TIP_PREFIJO_PERSONA", length = 2)
    public String getTipPrefijoPersona() {
        return tipPrefijoPersona;
    }

    public void setTipPrefijoPersona(String tipPrefijoPersona) {
        this.tipPrefijoPersona = tipPrefijoPersona;
    }

    @Column(name = "TXT_APELLIDO_CASADA", length = 40)
    public String getTxtApellidoCasada() {
        return txtApellidoCasada;
    }

    public void setTxtApellidoCasada(String txtApellidoCasada) {
        this.txtApellidoCasada = txtApellidoCasada;
    }

    @Column(name = "COD_DEPARTAMENTO_NAC", length = 2)
    public String getCodDepartamentoNac() {
        return codDepartamentoNac;
    }

    public void setCodDepartamentoNac(String codDepartamentoNac) {
        this.codDepartamentoNac = codDepartamentoNac;
    }

    @Column(name = "COD_PROVINCIA_NAC", length = 2)
    public String getCodProvinciaNac() {
        return codProvinciaNac;
    }

    public void setCodProvinciaNac(String codProvinciaNac) {
        this.codProvinciaNac = codProvinciaNac;
    }

    @Column(name = "COD_DISTRITO_NAC", length = 2)
    public String getCodDistritoNac() {
        return codDistritoNac;
    }

    public void setCodDistritoNac(String codDistritoNac) {
        this.codDistritoNac = codDistritoNac;
    }

    @Column(name = "COD_BANCO", length = 2)
    public String getCodBanco() {
        return codBanco;
    }

    public void setCodBanco(String codBanco) {
        this.codBanco = codBanco;
    }

    @Column(name = "TXT_RAZON_SOCIAL", length = 80)
    public String getTxtRazonSocial() {
        return txtRazonSocial;
    }

    public void setTxtRazonSocial(String txtRazonSocial) {
        this.txtRazonSocial = txtRazonSocial;
    }

    @Column(name = "TXT_CUENTA_ABONO", length = 25)
    public String getTxtCuentaAbono() {
        return txtCuentaAbono;
    }

    public void setTxtCuentaAbono(String txtCuentaAbono) {
        this.txtCuentaAbono = txtCuentaAbono;
    }

    @Column(name = "TIP_DOCUMENTO_IDENTIDAD")
    public Character getTipDocumentoIdentidad() {
        return tipDocumentoIdentidad;
    }

    public void setTipDocumentoIdentidad(Character tipDocumentoIdentidad) {
        this.tipDocumentoIdentidad = tipDocumentoIdentidad;
    }

    @Column(name = "TXT_DNI", length = 8)
    public String getTxtDni() {
        return txtDni;
    }

    public void setTxtDni(String txtDni) {
        this.txtDni = txtDni;
    }

    @Column(name = "TXT_ESSALUD", length = 20)
    public String getTxtEssalud() {
        return txtEssalud;
    }

    public void setTxtEssalud(String txtEssalud) {
        this.txtEssalud = txtEssalud;
    }

    @Column(name = "TXT_CARNET_EXTRANJERIA", length = 20)
    public String getTxtCarnetExtranjeria() {
        return txtCarnetExtranjeria;
    }

    public void setTxtCarnetExtranjeria(String txtCarnetExtranjeria) {
        this.txtCarnetExtranjeria = txtCarnetExtranjeria;
    }

    @Column(name = "TXT_RUC_ANT", length = 8)
    public String getTxtRucAnt() {
        return txtRucAnt;
    }

    public void setTxtRucAnt(String txtRucAnt) {
        this.txtRucAnt = txtRucAnt;
    }

    @Column(name = "TXT_AFP", length = 20)
    public String getTxtAfp() {
        return txtAfp;
    }

    public void setTxtAfp(String txtAfp) {
        this.txtAfp = txtAfp;
    }

    @Column(name = "TXT_PASAPORTE", length = 11)
    public String getTxtPasaporte() {
        return txtPasaporte;
    }

    public void setTxtPasaporte(String txtPasaporte) {
        this.txtPasaporte = txtPasaporte;
    }

    @Column(name = "TXT_RUC", length = 11)
    public String getTxtRuc() {
        return txtRuc;
    }

    public void setTxtRuc(String txtRuc) {
        this.txtRuc = txtRuc;
    }

    @Column(name = "TXT_LEGAJO", length = 20)
    public String getTxtLegajo() {
        return txtLegajo;
    }

    public void setTxtLegajo(String txtLegajo) {
        this.txtLegajo = txtLegajo;
    }

    @Column(name = "TXT_DOCUMENTO_IDENTIDAD", length = 11)
    public String getTxtDocumentoIdentidad() {
        return txtDocumentoIdentidad;
    }

    public void setTxtDocumentoIdentidad(String txtDocumentoIdentidad) {
        this.txtDocumentoIdentidad = txtDocumentoIdentidad;
    }

    @Column(name = "TIP_PERSONAL", length = 2)
    public String getTipPersonal() {
        return tipPersonal;
    }

    public void setTipPersonal(String tipPersonal) {
        this.tipPersonal = tipPersonal;
    }

    @Column(name = "TXT_APELLIDO_PATERNO", length = 40)
    public String getTxtApellidoPaterno() {
        return txtApellidoPaterno;
    }

    public void setTxtApellidoPaterno(String txtApellidoPaterno) {
        this.txtApellidoPaterno = txtApellidoPaterno;
    }

    @Column(name = "TXT_APELLIDO_MATERNO", length = 40)
    public String getTxtApellidoMaterno() {
        return txtApellidoMaterno;
    }

    public void setTxtApellidoMaterno(String txtApellidoMaterno) {
        this.txtApellidoMaterno = txtApellidoMaterno;
    }

    @Column(name = "EST_CIVIL")
    public Character getEstCivil() {
        return estCivil;
    }

    public void setEstCivil(Character estCivil) {
        this.estCivil = estCivil;
    }

    @Basic(optional = false)
    @NotNull
    @Column(name = "TXT_NOMBRES", nullable = false, length = 60)
    public String getTxtNombres() {
        return txtNombres;
    }

    public void setTxtNombres(String txtNombres) {
        this.txtNombres = txtNombres;
    }

    @Column(name = "TIP_CONTRATO", length = 2)
    public String getTipContrato() {
        return tipContrato;
    }

    public void setTipContrato(String tipContrato) {
        this.tipContrato = tipContrato;
    }

    @Column(name = "TIP_GRADO_INSTRUCCION", length = 2)
    public String getTipGradoInstruccion() {
        return tipGradoInstruccion;
    }

    public void setTipGradoInstruccion(String tipGradoInstruccion) {
        this.tipGradoInstruccion = tipGradoInstruccion;
    }

    @Column(name = "TXT_DIRECCION", length = 80)
    public String getTxtDireccion() {
        return txtDireccion;
    }

    public void setTxtDireccion(String txtDireccion) {
        this.txtDireccion = txtDireccion;
    }

    @Column(name = "TXT_ESPECIALIZACION", length = 60)
    public String getTxtEspecializacion() {
        return txtEspecializacion;
    }

    public void setTxtEspecializacion(String txtEspecializacion) {
        this.txtEspecializacion = txtEspecializacion;
    }

    @Column(name = "TIP_PROFESION", length = 2)
    public String getTipProfesion() {
        return tipProfesion;
    }

    public void setTipProfesion(String tipProfesion) {
        this.tipProfesion = tipProfesion;
    }

    @Column(name = "TXT_TELEFONO", length = 40)
    public String getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    @Column(name = "FEC_RESIDENCIA")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getFecResidencia() {
        return fecResidencia;
    }

    public void setFecResidencia(Date fecResidencia) {
        this.fecResidencia = fecResidencia;
    }

    @Column(name = "TXT_CORREO", length = 80)
    public String getTxtCorreo() {
        return txtCorreo;
    }

    public void setTxtCorreo(String txtCorreo) {
        this.txtCorreo = txtCorreo;
    }

    @Column(name = "TXT_OBSERVACION", length = 240)
    public String getTxtObservacion() {
        return txtObservacion;
    }

    public void setTxtObservacion(String txtObservacion) {
        this.txtObservacion = txtObservacion;
    }

    @Column(name = "TIP_SEXO")
    public Character getTipSexo() {
        return tipSexo;
    }

    public void setTipSexo(Character tipSexo) {
        this.tipSexo = tipSexo;
    }

    @Column(name = "FEC_NACIMIENTO")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getFecNacimiento() {
        return fecNacimiento;
    }

    public void setFecNacimiento(Date fecNacimiento) {
        this.fecNacimiento = fecNacimiento;
    }

    @Column(name = "FEC_REGISTRO")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getFecRegistro() {
        return fecRegistro;
    }

    public void setFecRegistro(Date fecRegistro) {
        this.fecRegistro = fecRegistro;
    }

    @Column(name = "COD_NACIONALIDAD", length = 3)
    public String getCodNacionalidad() {
        return codNacionalidad;
    }

    public void setCodNacionalidad(String codNacionalidad) {
        this.codNacionalidad = codNacionalidad;
    }

    @Column(name = "COD_PERSONAL_ANT1", length = 20)
    public String getCodPersonalAnt1() {
        return codPersonalAnt1;
    }

    public void setCodPersonalAnt1(String codPersonalAnt1) {
        this.codPersonalAnt1 = codPersonalAnt1;
    }

    @Column(name = "COD_PERSONAL_ANT2", length = 20)
    public String getCodPersonalAnt2() {
        return codPersonalAnt2;
    }

    public void setCodPersonalAnt2(String codPersonalAnt2) {
        this.codPersonalAnt2 = codPersonalAnt2;
    }

    @Column(name = "COD_DEPARTAMENTO_LOC", length = 2)
    public String getCodDepartamentoLoc() {
        return codDepartamentoLoc;
    }

    public void setCodDepartamentoLoc(String codDepartamentoLoc) {
        this.codDepartamentoLoc = codDepartamentoLoc;
    }

    @Column(name = "COD_PROVINCIA_LOC", length = 2)
    public String getCodProvinciaLoc() {
        return codProvinciaLoc;
    }

    public void setCodProvinciaLoc(String codProvinciaLoc) {
        this.codProvinciaLoc = codProvinciaLoc;
    }

    @Column(name = "COD_DISTRITO_LOC", length = 2)
    public String getCodDistritoLoc() {
        return codDistritoLoc;
    }

    public void setCodDistritoLoc(String codDistritoLoc) {
        this.codDistritoLoc = codDistritoLoc;
    }

    @Column(name = "NUM_HIJOS")
    public Short getNumHijos() {
        return numHijos;
    }

    public void setNumHijos(Short numHijos) {
        this.numHijos = numHijos;
    }

    @Column(name = "NUM_HIJAS")
    public Short getNumHijas() {
        return numHijas;
    }

    public void setNumHijas(Short numHijas) {
        this.numHijas = numHijas;
    }

    @Column(name = "NUM_DEPENDIENTES")
    public Short getNumDependientes() {
        return numDependientes;
    }

    public void setNumDependientes(Short numDependientes) {
        this.numDependientes = numDependientes;
    }

    @Column(name = "NID_RAZON_SOCIAL")
    public Long getNidRazonSocial() {
        return nidRazonSocial;
    }

    public void setNidRazonSocial(Long nidRazonSocial) {
        this.nidRazonSocial = nidRazonSocial;
    }

    @Column(name = "TXT_PROFESION", length = 60)
    public String getTxtProfesion() {
        return txtProfesion;
    }

    public void setTxtProfesion(String txtProfesion) {
        this.txtProfesion = txtProfesion;
    }

    @JoinColumn(name = "COD_UNIDAD_REGISTRO", referencedColumnName = "COD_UNIDAD")
    @ManyToOne
    public UnidadOrganizacional getCodUnidadRegistro() {
        return codUnidadRegistro;
    }

    public void setCodUnidadRegistro(UnidadOrganizacional codUnidadRegistro) {
        this.codUnidadRegistro = codUnidadRegistro;
    }

    @JoinColumn(name = "COD_UNIDAD", referencedColumnName = "COD_UNIDAD")
    @ManyToOne
    public UnidadOrganizacional getCodUnidad() {
        return codUnidad;
    }

    public void setCodUnidad(UnidadOrganizacional codUnidad) {
        this.codUnidad = codUnidad;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (nidPersonal != null ? nidPersonal.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Personal)) {
            return false;
        }
        Personal other = (Personal) object;
        if ((this.nidPersonal == null && other.nidPersonal != null) || (this.nidPersonal != null && !this.nidPersonal.equals(other.nidPersonal))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.gob.foncodes.ssa.bs.seguridad.domain.Personal[ nidPersonal=" + nidPersonal + " ]";
    }   

}
